perm filename MUSIC.TVR[UP,DOC]5 blob sn#168650 filedate 1975-07-07 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00041 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00006 00002	                            Music Manual
C00011 00003	                            Music Manual
C00012 00004	Music Manual
C00015 00005	Music Manual                                                  Changes
C00018 00006	Music Manual
C00021 00007	Music Manual                                             Declarations
C00025 00008	Music Manual                                             Declarations
C00029 00009	Music Manual                                             Declarations
C00031 00010	Music Manual
C00035 00011	Music Manual                                              Expressions
C00037 00012	Music Manual
C00040 00013	Music Manual                                               Statements
C00043 00014	Music Manual                                               Statements
C00046 00015	Music Manual                                               Statements
C00048 00016	Music Manual
C00051 00017	Music Manual                                        Extended Commands
C00053 00018	Music Manual
C00056 00019	Music Manual                                          Unit Generators
C00059 00020	Music Manual                                          Unit Generators
C00062 00021	Music Manual                                          Unit Generators
C00065 00022	Music Manual                                          Unit Generators
C00066 00023	Music Manual
C00069 00024	Music Manual                                       Built-in Functions
C00072 00025	Music Manual                                       Built-in Functions
C00074 00026	Music Manual                                       Built-in Functions
C00076 00027	Music Manual
C00077 00028	Music Manual
C00082 00029	Music Manual                                                   Syntax
C00084 00030	Music Manual
C00085 00031	Music Manual                                           Reserved Words
C00086 00032	Music Manual
C00089 00033	Music Manual                                          Error Messages.
C00092 00034	Music Manual                                          Error Messages.
C00094 00035	Music Manual                                          Error Messages.
C00096 00036	Music Manual                                          Error Messages.
C00099 00037	Music Manual                                          Error Messages.
C00102 00038	Music Manual                                          Error Messages.
C00103 00039	                            Music Manual
C00107 00040	                            Music Manual
C00108 00041	
C00109 ENDMK
C⊗;
                            Music Manual


                  T A B L E   O F   C O N T E N T S



                               SECTION                           PAGE


1      Changes    .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 2
            1-1       Changes to the Music Compiler
                              (NEWMUS) .  .  .  .  .  .  .  .  .  . 2
            1-2       TAPNEW and CONNEW   .  .  .  .  .  .  .  .  . 3
            1-3       Changes to UDPLAY   .  .  .  .  .  .  .  .  . 3
2      Declarations  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 4
            2-1       Identifiers   .  .  .  .  .  .  .  .  .  .  . 4
            2-2       Variable Declaration   .  .  .  .  .  .  .  . 4
            2-3       Array Declaration   .  .  .  .  .  .  .  .  . 5
            2-4       Function declaration   .  .  .  .  .  .  .  . 5
3      Expressions   .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 8
            3-1       Function Call:   .  .  .  .  .  .  .  .  .  . 8
            3-2       Unit Generator Call .  .  .  .  .  .  .  .  . 9
4      Statements .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .   10
            4-1       Function Call:   .  .  .  .  .  .  .  .  .   10
            4-2       Unit Generator Call .  .  .  .  .  .  .  .   10
            4-3       WHILE Statement  .  .  .  .  .  .  .  .  .   11
            4-4       UNTIL Statement  .  .  .  .  .  .  .  .  .   11
            4-5       FOR Statement .  .  .  .  .  .  .  .  .  .   11
            4-6       PRINT Statement  .  .  .  .  .  .  .  .  .   12
            4-7       Assignment Statement   .  .  .  .  .  .  .   12
            4-8       Block   .  .  .  .  .  .  .  .  .  .  .  .   13
5      Extended Commands   .  .  .  .  .  .  .  .  .  .  .  .  .   14
6      Unit Generators  .  .  .  .  .  .  .  .  .  .  .  .  .  .   16
            6-1       Controlled Calling Rates  .  .  .  .  .  .   16
            6-2       VFMULT  .  .  .  .  .  .  .  .  .  .  .  .   16
            6-3       LINEN   .  .  .  .  .  .  .  .  .  .  .  .   17
            6-4       VALUE   .  .  .  .  .  .  .  .  .  .  .  .   17
            6-5       The OSCIL family of Unit Generators   .  .   18
            6-6       The ZOSCIL Family of Unit Generators  .  .   19
7      Built-in Functions  .  .  .  .  .  .  .  .  .  .  .  .  .   21
            7-1       SYNTH   .  .  .  .  .  .  .  .  .  .  .  .   21
            7-2       SEG  .  .  .  .  .  .  .  .  .  .  .  .  .   21
            7-3       SEE  .  .  .  .  .  .  .  .  .  .  .  .  .   22
            7-4       SETSPEED   .  .  .  .  .  .  .  .  .  .  .   22
            7-5       PRINT   .  .  .  .  .  .  .  .  .  .  .  .   22
            7-6       RDNUM   .  .  .  .  .  .  .  .  .  .  .  .   23
            7-7       RAND .  .  .  .  .  .  .  .  .  .  .  .  .   23
            7-8       INT  .  .  .  .  .  .  .  .  .  .  .  .  .   23
            7-9       FORTRAN Functions   .  .  .  .  .  .  .  .   24
8      Making Music  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .   25

                                Page 
                            Music Manual


Appendix A     Syntax   .  .  .  .  .  .  .  .  .  .  .  .  .  .   26
Appendix B     Reserved Words .  .  .  .  .  .  .  .  .  .  .  .   29
Appendix C     Error Messages.   .  .  .  .  .  .  .  .  .  .  .   30














































                               Page i
Music Manual


                              SECTION 1
                              _______ _

                               Changes
                               _______




Most of the problems which  caused the message ILL MEM REF  have been
eliminated.   If  come  across  any problems  or  have  any  needs or
suggestions,  Please bring  them  to my  attention by  saying  to the
Monitor:

.MAIL TVR


The MAIL program will explain itself.



1-1  Changes to the Music Compiler (NEWMUS)
___  _______ __ ___ _____ ________ ________


The  sample  output routines  have  been rewritten  to  eliminate the
BIGBIT  kludge.  The  intermediate files  whose extensions  have been
MUSAA.DMD are  now in the  form: <file name>.<integer>,  for example:
TEST.0,  TEST.1, TEST.2,...  Now more  than one  set  of intermediate
files may be  on the disk at  one time an any  set may be  deleted by
saying DEL <file name>.*, for example DEL TEST.*. The format has also
been changed, since it is  no longer done with FORTRAN.   Therefore a
new  conversion  program has  also  been written  to  replace CONNEW,
called  NMUSIO. GARPLY  is still  used to  play from  the  disk.  For
details, see Page 25.

The error printout routines now contain an option to continue,  or to
edit, to retry, or to debug with DDT.

Core is  obtained automatically, whenever  possible.  It  still loses
under certain circumstances.

Play now prints the run time used in computing the samples.

When the Compiler asks for  an input file, it is no  longer necessary
to precede a file name with DSK:.  If just a return is typed, TTY: is
assumed.

The Compiler will accept files editted by TVED or E.



                               Page 2
Music Manual                                                  Changes


When inputting  from the TTY,  SYNTH and SEG  will display  the array
being filled.

NEWMUS should generate slightly better code for constants.

Array  elements  may  be  individually  referenced.   This  allows as
complex waveforms  as can  be described  by a  mathematic expression,
instead of the previous restrictions of combination of sine  waves or
approximation by line segments.

There is a  new set of statements  and block structure  added.  These
statements include  IF,  WHILE,  UNTIL and  FOR statements.   A print
statement  has  been  added  which  allows  literal  strings  so that
messages may be printed as well as numbers, which are now  printed in
floating point notation.  The literal strings  may also be  passed to
functions. In order to  use certain routines in the  FORTRAN Library,
the data type INTEGER has been added but is currently limited  to the
external functions  until type  conversion code can  be added  to the
compiler.

Functions may now be blocks as well as expressions.

There is a new extend mode command: FREEZE.

To make debugging the  compiler easier, a special debugging  mode has
been added.



1-2  TAPNEW and CONNEW
___  ______ ___ ______


TAPNEW and CONNEW  will not work with  NEWMUS, please read  about new
scheme on  .  Note  that tapes written  in the  old format  should be
read with the old programs.



1-3  Changes to UDPLAY
___  _______ __ ______


UDPLAY now detects the previously mysterious premature end  of sound.
Also,  a  problem  in  the old  version  caused  it  to  do excessive
computation which often caused  the lossage described above  has been
corrected. It  also new  checks the validity  of your  responses, and
will restart if you type altmode or backspace.



                               Page 3
Music Manual


                              SECTION 2
                              _______ _

                            Declarations
                            ____________






2-1  Identifiers
___  ___________


<identifier>            ::= <letter>{<alphanumeric>}
<alphanumeric>          ::= <letter>|<number>
<letter>                ::= A|B|C|...Z|_|$|#
<digit>                 ::= 0|1|2|...9


An identifier always  begins with a letter  and may be  followed with
any number of  letters or digits.   There are three  characters which
are treated as letters, $,   and _.  Lower case letters are converted
                        _        _
to upper case.  Certain  identifiers have special meanings  which may
not be used as names for variables, functions, arrays or instruments.
There  are  two kinds,  P  and U  variables,  which are  of  the form
P<number> and U<number>  (see Page 4)  and reserved words  like ARRAY
_             _                                                 _____
or BEGIN.  A list of reserved words is contained in  Appendix SECTION
   _____
.



2-2  Variable Declaration
___  ________ ___________


<variable declaration>  ::= VARIABLE <identifier>{,<identifier>};


All  variables must  be declared  before they  are used.   A variable
declaration consists of the reserved word VARIABLE followed by a list
of identifiers to  be declared as  variables.  All variables  must be
declared before they are used.  If they are to be used  during R-Time
(see Page  , they must  be declared as  R-Time variable  by preceding
the variable name with a slash in their declaration.

All variables are stored in floating pointer notation.

There are certain  variarray decl. li
                        <variable>(<constant>)

All  arrays  must  be  declared  before  they  are  used.   An  `rray
λdeclaration consists of  the reserved word  ARRAY followed by  a list
consisting  of  the  identifier   followed  by  the  array   size  in
parenthesis, separated by commas.  If there are several arrays of the
same size, the size may be omitted on all but the last array  of that
size.  Arrays are currently restricted to single  subscripts.  Arrays
within blocks  are not dynamically  allocated(1); they  are allocated
are compile time, hence they must be a fixed size.

Example:

ARRAY F1,F2,F3(512),BAZ(2000);  COMMENT Declares F1, F2, F3 to be
                                arrays of length 512, BAZ t/ be an
                                array of length 2000;



2-4  Function declaration
___  ________ ___________


<function declaration>  ::= FUNCTION <identifier>(<formal list>)
                                <function tail≡|
                            EXTERNAL FUNCTION <identifier>(<formal li
<formal list>           ::= <formal declaration>{,<formal list>}
<formal declaration>    ::= ARRAY <identifier> | INTEGER <identifier>
                            STRING <identifier> | <identifier>
<function tail>         ::= ; <block> | = <expression>

_______________________
(1) Dynamic allocation will probably be implemented in the future.

                               Page 5
Music Manual                                             Declarations


A  function declaration  defines a  function in  NEWMUS.   A function
takes from 0 to 2n arguments, which may be variables,  arrays, string
constants or expressions and returns a value, which is a real number.
Functions are executed at  either I-time or R-time, depending  on the
types of the arguments.

The function declaration includes  a list of formal  parameters, call
take  on the  values  of their  respective reall  arguments  when the
function is called.  The formal parameters are local  variables, that
is they are known only  within the function which they  are declared.
Outside  that  function,   they  are not  defined  or  may  have some
different definition.

Functions are always called  by reference(1), which means that  if an
assignment

formal  parameters,  the  argument  itself  will  be  modified.  Such
assignments  are discouraged,  as if  the function  is called  with a
constant  as an  argument, the  constant's value  will  change, which
usually has disastorous results.

There are three  forms of function  declaration.  In the  first form,
the value of the function is the value of the expression to the right
of the  the =.   For example, the  following function  calculates the
            _
cube of a number.

FUNCTION CUBE(X) = X * X * X;

PRINT CUBE(2);
8.


The second form is used for more complex functions.  Its value is the
expression part  of the  last RETURN  statement executed  within that
                              ______
function,  as  there may  be  more  than one  RETURN  statement  in a
                                              ______
function.  For example,   the following function returns  the maximum
amplitude of an waveform contained in an array.









_______________________
(1) This is the FORTRAN IV standard calling sequence on the PDP-10.

                               Page 6
Music Manual                                             Declarations



FUNCTION AMPLITUDE(ARRAY M);
  BEGIN VARIABLE I,MAX;
    MAX←0;                  COMMENT Initialize maximum amplitude;
    FOR I ← 0 STEP 1 UNTIL LENGTH(M)
      DO IF ABS(M[I])>MAX THEN MAX←ABS(M[I]);
                            COMMENT Compare each element with
                                current maximum;
    RETURN MAX;             COMMENT The value of the function is
                                the maximum amplitude found;
    END;


The third form  is used for functions  written in FORTRAN  or machine
code.  It defines the argument list which the function expects to see
and fetchs the address from DDT's symbol table.  This means  that you
must to  use the same  name for  the function as  was written  in the
program or  NEWMUS will not  find its address!   The following  is an
example of this form of declaration.

EXTERNAL FUNCTION SQRT(X);

WARNING:  The syntax for  formal declaration will be changed  soon to
conform to ALGOL.




















xαHC2




                               Page 7
Music Manual


                              SECTION 3
                              _______ _

                             Expressions
                             ___________




<expression>    ::= <simple expr><relop><simple expr>|<simple expr>
<simple expr>   ::= <term>|<term><addop><simple expr>
<term>          ::= <factor>|<factor><mulop><term>
<factor>        ::= <primary>
<primary>       ::= -<primary>|(<expression>)|<function call>|
                    <unit generator call>|<variable>←<expression>|
                    <variable>|<array name>(expression)|<constant>
<relop>         ::= <|=|>|α≤|≠|≥
<addop>         ::= +|-
<mulop>         ::= *|/


Expressions are like algebraic formulae with certain changes required
so that they may  be typed on a  keyboard.  For example, '*`  is used
instead of 'x` and '/`  has been used to indicate division.   The use
of parenthesis is similar, but the following:

                3+45
                _____
                 72

should be  written as (3+4*5)/(7*2),  not 3+4*5/7*2.  When  in doubt,
put in the extra parenthesis.  In mathematical notation, there  is an
implied  multiplication   frequently  used   which  must   be  stated
explicitly in NEWMUS,  therefore 2x+3 should be written as  2*X+3. It
                                                            _____
is  also  necessary  to  expiicately  parenthesis  the  arguments  to
functions which would not  be required in mathematical  notation, for
example, sin  x should be  written as SIN(X).   Relational operators,
                                      ______
(as in x>4) are defined to evaluate to 0 if false and 1 if true.



3-1  Function Call:
___  ________ _____


<function call> ::= <function>(<parameter list>)
<parameter list>::= <parameter>,<parameter list>|<parameter>
<parameter>     ::= <expression>|<array>|<string constant>


A function call consists of  the function name followed by a  list of


                               Page 8
Music Manual                                              Expressions


parameters  separated by  commas  and enclosed  by  parenthesis.  The
effect is  to call  the function  (or subroutine)  with that  list of
parameters.  If the function is  not defined to return a  value, such
as a FORTRAN subroutine, the  value of the function is  undefined and
may be almost anything. For additional information on  functions, see
Page 5.  For descriptions of  the built-in functions  available,  see
Page 21.

Example:

PRINT SQRT(2);

1.414213



3-2  Unit Generator Call
___  ____ _________ ____


A unit  generator is a  special kind of  function, as it  may contain
both at I-time and  R-time code and requires  special initialization,
Hence a unit generator call is only legal within an instrument.  Note
that a unit generator call within an expression can not be refered to
by Un.   Only unit generators  used as statements  are counted  for U
   _                                                                _
symbols.  See Section 16.
























                               Page 9
Music Manual


                              SECTION 4
                              _______ _

                             Statements
                             __________



<statement>     ::= <function call>|<unit generator call>|
                    <WHILE statement>|<UNTIL statement>|
                    <FOR statement>|<conditional statement>|
                    <PRINT statement>|<assignment statement>|
                    <block>



4-1  Function Call:
___  ________ _____

<function call> ::= <function>(<parameter list>)
<parameter list>::= <parameter>,<parameter list>|<parameter>
<parameter>     ::= <expression>|<array>|<string constant>


A function call consists of  the function name followed by a  list of
parameters  separated by  comm`s  and enclosed  by  parenthesis.  The
effect is  to call  the function  (or subroutine)  with that  list of
parameters.  If the function returns a value, that value is lost.

Example:

SYNTH(F1);              COMMENT Call the ftncpinn SYNTH w)th F1
                                `s an argument;



4-2  Unit Generator Call
___  ____ _________ ____

<unit generator call> ::= <unit generator>(<parameter list>)|
                <unit generator>[<expression>](<parameter list>)

∞E∀≥;X.Dλ→y-l<X=
}H~<d(λ≤n8z8-D~z;LD≠yH∧\;XnM;{K∧<h~.Dλ≠8/∀_{{NL:;C!,[⎇~∧=λ∩%↑~;9$;Yλ∧
K=~-\(_{lL(_;LD≤Y<&]<Y<d∧≤|→,=8;λ
≥Z=~,≥~>X.M;{K↓QR→;L<(λ(∞YJ=λx;Y<L~β\H<;≠λ∧
<h≠mm≡(≠\x;λ∞⎇=~~-d_;H∧
;L⎇∞.;99NEH∃≡(h∞l⊗c.T
v2εnMαπ.m≡Bε>]lW⊗∂M}"εNd⊗rε≥l7'↔≥\Vw"<⊗rε,WK↔≠/⊃↔⊃β&yβe¬+984R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α`4*}s3eβ.s'Qβ>+;↔K∂#?KMπ+O↔⊃εMβO&S↔7.sQMβ∂⊃∃β∂}+;S↔#M←dAT@gs[	←YfX↓SL~∀@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@0~∃Btnit9rw2y_z7y⊂~yP:yYr⊂⊂;Zz4⊂0[⊂2|8≤2yyt[w⊂4zλ4yP7≠z⊂⊂1[zw:2Y↔⊂⊂)IrFE)Yqz4w[⊂_[↔βEεEεBεE⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂(_srP_LεEGdβSST
tDLHTβf≡⎇lFO&≥|f∞cdλDzβN>B∂&]\Vw#aQ hT∀
tDLHTπ∨&≡LVj&N∧∧_rF≤∀→#ε:_iQ∀reserved word WHILE, an ¬xPrab∪)mf,
                                                _____
called  the  condidi.n  f.llgw¬d  b9  tHe  reserved  word  DO  and  !
                                                           __
sta⊗<ttvtement.  So long  as the  condition is  true, i.e.  ngt  zero, the
statement will  be rep%!ted  indefinitely.  Generally,  the statement
affects  part   of  the  condition   and  the   statement  eventually
terminates.

Example:

I←1; WHILE I<1000 DO PRINT(I←2*I);

2. 4. 8. 16. 32. 64. 128. 256. 512. 1024.



4-4  UNTIL Statement
___(ε⊂εεεEεEβE≡*g∃$f⊂)]0z2vY78∨↔'O(⊃	t∂≤⎇∧≡→;9-n∂H∃)j∩3λπL{{Y
≡~;{L≥∂C"AQP;H∧
3U∩)Dλ≤⎇≡→;9-nλλ~.4λ≠~-<(_;D∧∃r∩)H(λ≤nL=→;,]]λλ←_y<∞Dλ≥~≡λ≥~Q"\⎇≡→;9-nλ~<d>→8n↑→9λ,9[|LTλ≥≡*ε=⎇f&OM≥vrε≥lBεf⎇}ααπL↑&nNl≡F/~∞⎇ε.pQ,FB*∧6vvM≡FN}d
↔~α∞N#.*d∧αOD6vw=≡7'~∧
v2α∞Mε*π,↑6/↔l\Bαπ|}&"αλHrbε⊃P"αα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧β↓@h.>F∂&]\Vw"mvff}|V"ε/∀π&FT∞&/≡↑.f."∞⎇w⊗"
Ye$LD⊗v"≥bαε←∞π⊗/>=⊗}rD∞FF(Q$ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧β↓AAβ↓PV≡⎇lFO&≥⎇bph!Q$/F≥←3∃hhP4*&{	Amα$yαBJLrQ"&|I5E%¬*:R&bα$qAXh(4)Jq↓a9β99↓Yr↓U9↓"q↓M9β⊃9↓Er↓@4(hP4(4S!5U↓∧2>Iα∨#πS↔n+;P4⊃@`a↓↓@`aA@```A@``4Ph(4)d2>Iβ∨#πS↔n+;QyβQiuα4zI↓s6K'π⊗c∃z⎇f+cCK/≠O'?sqαNR-↓↓s↔GβK↔O≡K?9yh)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓α,rR&1βc↔cC⊗+OO'}qyα∩z↓sOS∂#↔7↔w!x4(hRS#'~βC↔K6{K7Mπ##∃β∨#πS↔n+;Qβ6;Iβ↔∞≠!β[∞cW∃β}1βS#*β[πIN3∃bβ↔∨Ns;';8h+←'&AβS#*β↔cC⊗+OO'}qβ'7n+∪'π&+3eβ6{33?>K;≥β&C∃↓≡}↓β'9π≠S↔C~β∪↔≠Ns↔⊃β↔H4+SF)βO↔≡{;⊃β/CCK↔∨≠'?9π+;S'bβ'QβO→β∨K.S↔Iπ##π9π##∃↓π##'K"β↔cC⊗+OO'}q84(hP4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓αε∨∃↓λ4(27W≡K
α7∞sWπ1α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓ααOSπ&+7↔;'_4(4Ph*S#*β[π3.)↓β?2βS#∃π3πK'∞∪3∃↓π;'31ε3←πO→β∃αβS#∃εcπOQπ3π3W*↓β←#N≠!β←∂_4+3/≠MβSF9βSF)βS#N∪⊃↓β/CCK↔∨≠'?9r↓α'→π##∃β6KKOQε+cCK/≠O'?r↓β'Mε;K↔π&+H4+&Cπ9β&C∃βSFKK⊃β/CCK↔∨≠'?9b↓βS#*βOSπ&+7↔;"β←'3bβ∃↓π≠/'Cε+⊃βπg#?∨↔&C↔H4V;⊃β&C∃β[∂∪'πf)βW;≡Cπ;∨.!84(hR↔cπoβ3∃hhP4*~⎇⊃α&⎇ααNR⊗α↓IαVu"&1↓∪↓αBJLrQ"%KX4(4S↓↓I9β!9↓Yr↓a9↓↓9↓E∩q↓EQr↓EY9β	a9↓∪↓84(hP4(4S!5Y↓¬αJ&:"αOSπ&+7↔; h(``B↓``A@a`A@```A@`4(hP4)r¬∩&:Qπ≠SπS.k↔;Qr↓iiu¬αJ&:"↓sCKNsQβ3O≠Qx4ScCK'w!β3'∨!y↓↓α↓↓↓iSi↓s↔GβK↔O≡K?9yccCK'w!β3'∨!{qs/CCK↔∨≠'?9w`4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓βcOSKNs≥β∂}sOSπw!y1sπ∪';Qεc'OQw`4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓βcOSKNs≥β∂}sOSπw!x4(hRS#'~↓βSgε+Mβ↔∞≠!↓βw+7↔∩β?I↓π≠SK'v9β'9αβS#∃πβK';"↓β3'∨!9↓αw+7↔↔→βπK(h+CKNsS↔⊃αβ'9β7∪↔∃↓ε3'↔3"β≠?KnQ↓β>KS!β
↓βSK∞K3';:βOCπ≡)9↓↓¬≠SK'v;Mβπ⊗(4+C⊗K;S↔"↓β←'&C?WQε	↓β3.∪';:↓β?Iπ#Kπ'fK;≥↓π≠Cπ∂*βπ;⊃αβ7πeαβ';∂g+∪∃β∞sd4+≡CπKπ∨#↔I9ααS=β.sS↔Iε	β∪?.∪3∃↓πW?S*aβCK.≠↔∪∃εKQβ←O#!yε;⊃↓π#=β↔w#↔H4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓@h(y1πβWQβNqβS←zβ∂?;≡+∂WSO3∃yph(a↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓`hP4*↔F7C3+P4*B∀J:Q↓∃~FJQC⊃%↓uα⊃2NF∃!!I%Xh(4*≥
JQ!∩I↓u↓
qQEQ∪_4(4Ph(4)"i]↓α∂≠O'∨vk↔;Q¬≠SπS.k↔;PhP``aα```A@```AA``A@```A@4(4Ph)sπ∨≠'∨;n+;Qβ∨#πS↔n+;QyβQiu↓g3πK'∞∪3∃z{c↔cC⊗+OO'}qx4(hRS#'~βOSπ&+7↔;"βπOON;;Mβ&C∃β[∞cW∃β}1βS#*β↔cC⊗+OO'}qβS=π##∃β6K'π⊗c∃βSxh+S#*β3↔≠"β?→β&C∃↓≡}↓9↓↓∧≠πWSN{9iα∂≠O'∨vk↔;Qπ#=β≠␈∪7π1πβπKπn+S↔K~↓β?→ελ4+≠.s∂S'}qβ∂πrβ#π[*βW;↔Gβ↔∂S.!βK↔∨+3SMZ↓βO↔*αBε≡*↓84(hR↔cπoβ3∃hhP4*&{	IMmα↓↓↓↓α↓↓↓α≤z66⊗u!αO↔"βS#∃π3π3W*β?→β&C∃β[∂∪'πf)↓≡'αβS=↓⊃Ml4Ph(4(hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓αCπ>)↓EHhP27W≡K
α7∞sWπ1α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓ααOSπ&+7↔;'_4(4Ph)Q5B↓α3}≠,4(A@a↓A@```hP4(4Sc3?≡Yy↓iSiα
⊗<J9↓s&+∂3π⊗S'?rβ3'O#qmsO&S↔7.sQβ3O≠Qx4Sc∪↔∂fKπSN{9β3O≠Qy↓SQu↓s&+∂3π⊗S'?sqms∪.≠3πK∂#'?9εc'OQwas∪↔≡cπKπ&K?9xhQsOS∂#↔7↔w!β3'∨!y↓iSi↓sO&S↔7.sQymg≠SπS.k↔;Qεc'OQwb⊗:⊂hP4*¬∧∪3?∂Z↓β'Mε	↓β3O≠Qβ?2↓βOS∂#↔7↔w#M1β↔∪π∂//#M↓β↔IβS#*↓βK↔≡+K[↔"β←?K'→04*∀*≡&9ε;⊃↓∧*:⊃β∞s⊃↓β≡+CπK∂#↔⊃β↔I↓βSF)βO↔nK∂?3}sM9↓ααπ;g&C';≥ε#↔∂3∂∪↔⊂4W;'S#Nqβ¬β⊗c?∂-εKMβ;␈!β/;␈;9β?/#O'∪*βS#π"β3?≡Y1β/!βπ;O##';:β←#'≡Aβ'LhS∪↔∂fK↔⊃ε{WSON#∃β¬ε∪3?∂Zβ7πeε∪∃βK.3↔K↔v≠↔⊃β>KS#'rβS#π"β3?≡YβCK␈3'∪↔ h+S#∂!β'QεCπMβv{Q↓β⊗+↔9β⊗+∪↔≠Ns↔⊃9ααS#W~β[πKN3↔~β;π7/→↓β←O##'9ε∪3?∂←_4+7∂K∃β≡C?O↔rβ←'SF{WQβ⊗+';≥ε≠?;∂/∪;↔⊃π;'S!εsπ7∃ε≠?;≠fK∂SMph(4*/Cπ7Cf)h4(hRZεJL

2∃¬Amαb{	IMm¬αJ&:"αal4Ph)EI~p4(4T∩⊗≡&rαZεJL

2∃¬A2emααb⎇Q+1mαf{9aemααBJ&u!αa2KY↓α⊗t!l4(hQQUYr↓]aeph(4*¬∩&:Q¬Al4(hQEIMph(4*¬∩&:Q¬Il4(hR⊗JJ⎇⊃i↓α,r∩⊗~Lr⊗⊃αL"⊗:RL2&⊗Iα↓↓α3Ns∃↓uβ9↓=DhRBJ&u!αelhQ↓↓↓α↓↓αxhQ⎇|4Ph(4(hP4(4Ph(4(hP4(4Ph(4(hP4(4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓ααCπ∨*↓EL4P27W≡K
α7∞sWπ0hP4(4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓¬~⊗∞RLz9↓ThQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α```A@`a@h(4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓∧+cS↔v#↔⊃α≡{77πv#L4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓↓@```A@`aA@```A@`4(hP4(4Ph*S#/≠∃β∂}k7π;'→β7πJβ∃β.sS↔K.!βπQπ##∃β&{Aβ3/3↔1β↔IβCK.≠↔∪'v9βS#.iβ←'&@4+πr↓sπ3"β7?∪+q↓#←FK∂!βO→β↔∂F{↔⊃β∂→↓⊃%ph)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α`4(hR↔c'#Q↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓βcπ3Qεk?∪∃t*b&PhP```@h(4*⊗+SWKrβS=αn{;'S␈⊃84(hRC3πKQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓βcπ3Qεk?∪∃u↓↓s'w#↔∨↔∪p4(`A@`4(hRC3πO→βS#*β7WON→βW63↔K↔"β'9↓ε≠?K∃π##∃β∨β↔∂'6K↔⊃βw+7↔∩β?→↓π#'7↔~q↓α'0h+;=εK∨Wn+;QβO→β∨'6+91β}s∃β'~βπOO.k↔⊃8hP4*O∂3∃i↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓sπg!β7?&)zNε4(4(`A@`4(hROπ[/→βS#*β7WON→βW63↔K↔"β'9↓ε≠?K∃ε{9β¬ε#'O-ε3'3∃r↓απQααOSπv3?K⊃bβS#'_h+'MεK9↓E∩β'Qε3?K7∂!84(hRCK'w!i↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓βcπ3Sn{∪∃z¬∩&:Qβc↔cC⊗+OO'}qyl4Q@```@h(4*π∪';S~βS#∃π3π3W*β?→β&C∃β↔GβK↔O≡K?99∧KQβ'~β;?]ε9↓β␈∪∪';∂∪eβO&S↔7.sQ84U≠↔∃απ∪';Q¬≠SπS.k↔;Qε{9αC∞;∃↓E∩p4(4U∪↔O↔#Q↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓f3Qβn{∪∃z∀*N⊗PhP```A@4(4T#↔3↔&+Mβπfaβ';∨#KW7.sSM1εKKπO→1βπv!β[π⊗Kπ3*q↓↓α/≠O↔;&Kπ33JβK↔O&{K↔LhSS#∃ε≠?7CNc↔I↓π#=βSF)↓βO&S∃β>C'∂!αβ'Qβ>M↓βNqβ←#.q↓β'"β←πMαβ3?π&+⊃β?⊂h+≠K␈S↔98hP4*≠⊗+↔k∃R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓sπg!β7?&)z~J,*j∀4Q@```A@4(4Tkπ/∃π##∃βπ∪↔O↔w!βOS∂#∃β?2↓α:⊗<jVMβNsS=β&C∃β'vKS'πbβOSπ&)↓βπv!βK↔'+∂↔LhSS=β&C∃↓βnK;'7.iβ∂?⊗)βK↔∂+'K↔"q↓↓α⊗+SWKrβS=β&C∃↓αn{;'S␈⊃βS=αβπ33␈9βS#(h+∂?⊗)β'7∞;∃βSzβ∃β≡[↔⊃r↓α'→ε	αJ⊗≤*Qβ'~β3πS/⊃β∪?v)β'9π##'Mε≠?K∃εK7π∨*`4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓`A@``4VKQβ←Nc1βK/#WK9π#=βSFKMβO∂3↔⊃β∨#πS∃ph(4*⊗+∪W∂*α∂?K*βO'k+Q↓↓↓α↓↓↓↓α↓↓↓s∞cQβ7}#∃z⊗D~&N∀hP```A@a`A@a`A@`4(hRK↔∪.≠↔Mβ&yβS#*β7';NkW5β≡{K∃β⊗+GW'⊗+⊃84Ph*NB~∃i↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓sπ3"β7?∪+rNBε≤(4(`A@``4Ph(4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓¬βπ∨∃β	P4(β↑r	Music Manual                                        Extended Commands


Prints the total  space available followed  by the core  buffer space
and the number of seconds of sound which may be produced.

DDT:                         <alt mode>DDT
___

Starts up RAID or DDT. [Not usually loaded in system version  but may
be in other core images.]

Printing the Symbol Table:   <alt mode><declarator> LIST
________ ___ ______ _____

This list  the contents of  the symbol table.  Please note  that this
does not include symbols in inner blocks.  The following types may be
listed:

        VARIABLE
        FUNCTION
        ARRAY
        INSTRUMENT
        UNIT_GENERATOR






























                               Page 15
Music Manual


                              SECTION 6
                              _______ _

                           Unit Generators
                           ____ __________




Consider producing the  sound of a simple  sine wave.  If one  had to
call the  sine subroutine  for each  sample, it  would take  about   
minutes to  compute a second  of sound at  the lowest  sampling rate!
Therefore, instead of calculating  the function for every  sample, an
array is  filled with  the values  of the  function.  Then,  for each
sample, the value is read out of the appropriate entry in  the array,
instead of calculating it.   Of course, for many kinds  of functions,
the value will not be as exact, but it is usually adequate for use in
music.  There are unit generators which do interpolation,  instead of
a simple array lookup, and these will produce accurate  enough values
for most critical cases.



6-1  Controlled Calling Rates
___  __________ _______ _____


In  many  cases,  a  function  does  not  change  rapidly  with time.
Therefore to save computer time, it would be desirable not to have to
call the unit  generator for every sample.   This, which is  called a
controlled  calling  rate,  is  expressed  by  placing   a  bracketed
expression immediately  following the unit  generator name in  a unit
generator call.

Example:

        OSCIL[10](P4,10*MAG/P2,F1);

Calls the unit generator OSCIL every tenth sample, and uses  the same
value for the other nine samples.



6-2  VFMULT
___  ______


Argument list:

        1 - Amplitude
        2 - Subscript
        3 - Array

                               Page 16
Music Manual                                          Unit Generators


VFMULT meltiplies the first  argument times the element of  the array
described by the  second argument. If  the second argument  is getter
th`n the array length, it is reduced by that array length until it is
within the size nf tyP0y9λ\WεEβE∧EεB≠⊗YPλ&$g"SεEε⊂⊂εεEβEεE \3xvr[:⊂64\z≥εEβE⊂⊂⊂λ⊂⊂⊂⊂P⊗P [x64z≥r2FEλ⊂⊂⊂⊂λ⊂⊂→⊂P)4yYP:4vYWj7z_v⊂:4[rFE⊂λ⊂⊂⊂⊂λ⊂→P⊗H"2qp↑P:4vYWj7z_v⊂:4[rFE⊂λ⊂⊂⊂⊂λ⊂~⊂⊗H*7z0[⊂:4vYFE⊂⊂λ⊂⊂⊂⊂λ~P⊗P⊂y90|CE⊂⊂⊂λ⊂⊂⊂⊂
⊂⊗P$[4z4p[⊂87t[:⊂4wλ0y90↑FEεE∃44yP→:w1z~ww⊂:\ryP0H→\~⊂≥7y2≤∞\X>&FdFG⊗\WO↔∂&K?;MbβS=β>+;↔K∂#∃βπph+↔;6+3?C*↓β≠Gv≠S'?2nSa@ 3aparate  rise time,  intermediate  time and
λdecay  t)-e.  The  rise time  and decay  tim% are  ! fUnction  in the
second `pgqmDlp,544x2λ⊂x∩zK∩6:_
→λ≥
(≥≠nL;λ≥
≥9+H∧
~→:.$λ≥X-F9<h

α XdD~;Yε$≠(>&α∀2αb>≥Dπ&\Gπ∂∂␈∪∪';:βS=β&C∃β≠}c3?←Ns≥β≠␈∪6W1
`4(0B↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓βd⊂`BDλ,%+@∀⊂1	λ¬01	
∀⊂&!"Hλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλ→\x>(∞E;)*jα≤"3α<≤"3"∀)H02λ	pCKl%s:

To obtain a ris% tim% nf .1 sEconds and a decay time ,f .4 s%cnnds,

LINEN(P4,.1,.4,P4,F1,TMP←0);

To obtain a 10 rise time and a 33.3 decay time,

LHNDN(P4 0(##1(100,F1,TMP←0);


Dh% in	t)al87tw≥⊂4w⊂_y90|H⊂6zy]⊂12P_P;0y~pq62H0w2≡=≠⎇;Dλ≥<n\;≠≡$Y#"O,<[kD¬∩9H
≡λ~,d(λ{lnu_≠NEλ≡;nT≥z;
D_{≠l,Y<G&F≡G?9∨!π;Q
I84(hP4(4S15Q↓¬2ε2V(h(``B↓``A@`4(hP4*π⊗;U7↔7!β3'∨!h4(hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓@@⊂!aλ~∧A          Unit Gen$rat∞r1λλλ